package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

// TODO 临时文件断点续传 os.Seek()
func Read() ([]byte){
//func Read(byteChan chan []byte) {
	//file, err := os.Open("F:\\新建文件夹\\燕子.mp4")
	file, err := os.Open("G:\\迅雷下载\\黑暗正义联盟：天启星战争.BD.1080p.中英双字.mkv")
	if err != nil {
		fmt.Println("文件打开错误")
		return nil
	}
	defer file.Close()
	reader := bufio.NewReader(file)

	var total []byte
	buf := make([]byte, 1024)  //1575792
	n:=1
	for {
		_, err := reader.Read(buf) //视频文件没有'\n'，不能使用ReadBytes
		if err == io.EOF {
			fmt.Println("读取结束")
			break
		} else if err != nil {
			fmt.Println("读取失败")
		}
		fmt.Println(n)
		n++
		total = append(total, buf...)
	}

	return total
}

//func WriteToFile(buf []byte) {
func WriteToFile() (err error) {
	//filePath := "F:\\新建文件夹\\燕子.avi"
	filePath := "G:\\迅雷下载\\黑暗正义联盟：天启星战争.avi"
	dstFile, err := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	if err != nil {
		fmt.Println("创建或打开文件错误")
		return
	}
	defer dstFile.Close()
	writer := bufio.NewWriter(dstFile)
	total:=Read()
	//for {
	//	buf := <-byteChan
	//	_, err := writer.Write(buf)
	//	if err!=nil{
	//		fmt.Println("Write error", err)
	//	}
	//	writer.Flush()
	//}
	writer.Write(total)
	//writer.Write(buf)

	//写入文件
	writer.Flush()
}

func main() {
	//var byteChan = make(chan []byte, 300)
	//Read(byteChan)
	WriteToFile()
}
